
// 状态数据
class State {

	/**
	 * 每个框的状态 [8]
	 */
	frames = [
		new FrameState(),
		new FrameState(),
		new FrameState(),
		new FrameState(),
		new FrameState(),
		new FrameState(),
		new FrameState(),
		new FrameState()
	];

	/**
	 * 中间洛克人的框
	 */
	middleFrame = new FrameState();

	/**
	 * 当前光标选中的是哪个:
	 * [0-8]: 选 BOSS 的框
	 * -1: 选中间洛克人
	 */
	cursor = -1;

	/**
	 * 是否在抽奖状态
	 */
	round = false;

	/**
	 * 使用的主题
	 */
	theme = 'rm3';

	/**
	 * 整个画面的标题文本
	 */
	titles = {
		// 正常时的文本
		normal : 'PUSH   START',
		// 抽奖时的文本
		round : '眼保健操   现在开始',
	};

	/**
	 * 动画相关参数数据
	 * 
	 * rm3:{
	 *   open : 入场动画帧数
	 *   selected : 选择后的动画帧数
	 * }
	 */
	anime = {
		/**
		 * 正数代表入场动画，每一帧减一定数量, 到 0 表示入场动画结束
		 * 
		 * rm3 的 open 初始值为 2, 每帧 -time/64
		 * 
		 * 0 表示没有
		 * 2 表示入场动画启动前，还未播放
		 */
		open : 2,

		/**
		 * 选择完成后，每一帧 +1,
		 * 
		 * 0 表示没有
		 */
		selected : 0,
	};

	extract () {
		return {
			frames : this.frames.map(f => f.extract()),
			middleFrame : this.middleFrame.extract(),
			cursor : this.cursor,
			theme : this.theme,
			round : this.round,
			stage : this.anime.open > 0 ? 'open' : 
					(this.anime.selected > 0 ? 'selected' : 'normal'), 
			themeTitie : this.titles
		}
	}

}

class FrameState {
	/**
	 * 框状态: 是否能确定 （选都是能选的）
	 * 洛克人三里面打四天王时，有四个格子给禁了，这时 enable = false
	 */
	enable = true;
	/**
	 * 头像是哪个.
	 * @type {string}
	 */
	avatar = null;
	/**
	 * 名字
	 * @type {string}
	 */
	title = '';

	extract () {
		return {
			enable : this.enable,
			avatar : this.avatar,
			title : this.title,
		}
	}
}


export {
	State,
	FrameState
};
